﻿using PagedList;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Tippelde.Entities;
using Tippelde.Services.Dtos;

namespace Tippelde.Services.Events
{
    public interface IEventManager
    {
        EventHeaderData EditEvent(EventHeaderData e, string creatorName, IEnumerable<int> groupIds);
        /// <summary>
        /// 
        /// </summary>
        /// <param name="ehd"></param>
        /// <exception cref="TippeldeException">Thrown on error</exception>
        /// <returns></returns>
        EventHeaderData CreateEvent(EventHeaderData e, string creatorName, IEnumerable<int> groupIds);

        IPagedList<EventHeaderData> GetEventHeadersForUser(string userName, int? page, int? count);

        List<EventHeaderData> GetUpcomingEventHeadersForUser(string userName, int? count);
        IPagedList<EventWithBetData> GetEventHeadersWithBetForUser(string userName, int? page);
        IPagedList<EventHeaderData> GetEventHeaders(string userName, int groupId, int? page);

        IPagedList<EventWithBetData> GetEventHeadersWithBet(string userName, int groupId, int? page);
        EventHeaderData GetEventHeader(int eventId);
        EventWithBetData GetEventHeaderWithBet(string userName, int eventId);
        void DeleteEvent(int eventId);
    }
}
